package com.maciqing.mall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/*
    1、整合MyBatis-Plus
        1、导入yilai
        2、配置
            1、配置数据源
                1、导入数据库的驱动
                2、在application.yml配置数据源相关信息
            2、配置MyBatis-Plus
                1、使用@MapperScan
                2、告诉MyBatis-Plus，sql映射文件位置

    2、逻辑删除
        1、配置全局的逻辑删除规则（省略）
        2、配置逻辑删除的组件Bean(省略)
        3、给Bean加上逻辑删除注解@TableLogic

    3、JSR303
        1、给bean添加校验注解，并定义注解的message提示
        2、开启校验功能@Validated
            效果：错误以后会有默认的相应
        3、给校验的bean后紧跟一个BindingResult，就可以获取到校验的结果
        4、分组校验（多场景的复杂校验）
            1、@NotNull(message = "修改必须指定品牌id",groups = {UpdateGroup.class})
            给校验注解什么情况需要进行校验
            2、@Validated(AddGroup.class)
            3、默认没有指定分组的校验注解@NotBlank，在分组校验情况下@Validated(AddGroup.class)不生效
        5、自定義校驗
            1、编写一个自定的校验注解
            2、编写一个自定义的校验器ConstraintValidatorContext
            3、关联自定义的校验器和自定义的校验器注解
            @Documented
            @Constraint(validatedBy = {ListValueConstraintValidator.class 【可以指定多个不同的校验器，设配不同类型的校验】)
            @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
            @Retention(RUNTIME)
 */
@EnableFeignClients(basePackages = "com.maciqing.mall.product.feign")
@EnableDiscoveryClient
@MapperScan("com.maciqing.mall.product.dao")
@SpringBootApplication()
public class MallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallProductApplication.class, args);
    }

}
